<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Demo-17-生命周期</title>
    <script type="text/javascript" src="../JS/vue.js"></script>
</head>
<body>
<div id="root">
    <!-- 生命周期:
        1. 又名生命周期回调函数、生命周期函数、生命周期钩子
        2. Vue 在关键时刻会帮我们调用一些特殊名称的函数
        3. 生命周期函数的名字不能更改, 但函数的具体内容是程序员根据需求编写的
        4. 生命周期函数中的 this 指向是 vm 或组件实例对象 -->
    <h3 :style="{opacity}">Hello World!</h3>
</div>

<script text="text/javascript">
    const vm = new Vue({
        el: '#root',

        data: {
            opacity: 1,
        },

        methods: {

        },

        // Vue 完成模板的解析并把初始的真实 DOM 元素放入页面后(挂载完毕)调用 mounted
        mounted() {
            setInterval(() => {
                this.opacity -= 0.05
                if (this.opacity <= 0) {
                    this.opacity = 1
                }
            }, 50)
        },
    })

    // 通过外部定时器实现(不推荐)
    // setInterval(() => {
    //     vm.opacity -= 0.05
    //     if (vm.opacity <= 0) {
    //         vm.opacity = 1
    //     }
    // }, 50)

</script>
</body>
</html>